Skip to content

Try to use Limited API (Python version >= 3.14)#359

Closed
skirpichev wants to merge 12 commits into
diofant:masterfrom
skirpichev:limited-api/234
Closed

Try to use Limited API (Python version >= 3.14)#359
skirpichev wants to merge 12 commits into
diofant:masterfrom
skirpichev:limited-api/234

Conversation

@skirpichev

@skirpichev skirpichev commented Jul 27, 2026

Copy link
Copy Markdown
Member

See #234

TODO:

skirpichev added 11 commits July 9, 2026 09:36
Setting up build environment...

      + mkdir -p /
      + /opt/python/cp39-cp39/bin/python -c 'import sys, json, os; json.dump(os.environ.copy(), sys.stdout)'
      + pwd
      + pwd
      + which python
      + python -V -V
  Python 3.15.0b2 free-threading build (main, Jun  4 2026, 13:36:37) [GCC 14.2.1 20250110 (Red Hat 14.2.1-11)]
      + which pip

[...]

Building wheel...

      + rm -rf /tmp/cibuildwheel/built_wheel
      + mkdir -p /tmp/cibuildwheel/built_wheel
      + python -m build /project --wheel --outdir=/tmp/cibuildwheel/built_wheel --verbose -Csetup-args=--vsenv
  * Creating isolated environment: venv+pip...
  * Installing packages in isolated environment:
    - meson-python
  > /opt/python/cp315-cp315t/bin/python -m pip --python /tmp/build-env-
    jca10p_e/bin/python install --ignore-installed --use-pep517 --no-warn-
    script-location --no-compile --no-input -r /tmp/build-
    requirements-e3hulq3p.txt
  < Collecting meson-python (from -r /tmp/build-requirements-e3hulq3p.txt (line
    1))
  <   Using cached meson_python-0.20.0-py3-none-any.whl.metadata (2.1 kB)
  < Collecting meson>=1.2.3 (from meson-python->-r /tmp/build-
    requirements-e3hulq3p.txt (line 1))
  <   Using cached meson-1.11.2-py3-none-any.whl.metadata (1.8 kB)
  < WARNING: Cache entry deserialization failed, entry ignored
  < Collecting packaging>=23.2 (from meson-python->-r /tmp/build-
    requirements-e3hulq3p.txt (line 1))
  <   Using cached packaging-26.2-py3-none-any.whl.metadata (3.5 kB)
  < Collecting pyproject-metadata>=0.9.0 (from meson-python->-r /tmp/build-
    requirements-e3hulq3p.txt (line 1))
  <   Using cached pyproject_metadata-0.12.1-py3-none-any.whl.metadata (6.5 kB)
  < Using cached meson_python-0.20.0-py3-none-any.whl (29 kB)
  < Using cached meson-1.11.2-py3-none-any.whl (1.1 MB)
  < Using cached packaging-26.2-py3-none-any.whl (100 kB)
  < Using cached pyproject_metadata-0.12.1-py3-none-any.whl (23 kB)
  < Installing collected packages: packaging, meson, pyproject-metadata, meson-
    python

  < Successfully installed meson-1.11.2 meson-python-0.20.0 packaging-26.2
    pyproject-metadata-0.12.1
  * Getting build dependencies for wheel...
  * Installing packages in isolated environment:
    - ninja >= 1.8.2
  > /opt/python/cp315-cp315t/bin/python -m pip --python /tmp/build-env-
    jca10p_e/bin/python install --use-pep517 --no-warn-script-location --no-
    compile --no-input -r /tmp/build-requirements-j_xnf8a3.txt
  < Collecting ninja>=1.8.2 (from -r /tmp/build-requirements-j_xnf8a3.txt (line
    1))
  <   Using cached ninja-1.13.0-py3-none-
    manylinux2014_aarch64.manylinux_2_17_aarch64.whl.metadata (5.1 kB)
  < Using cached ninja-1.13.0-py3-none-
    manylinux2014_aarch64.manylinux_2_17_aarch64.whl (177 kB)
  < Installing collected packages: ninja
  < Successfully installed ninja-1.13.0
  * Building wheel...
  + meson setup /project /project/.mesonpy-phtgps2v -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --vsenv --native-file=/project/.mesonpy-phtgps2v/meson-python-native-file.ini
  The Meson build system
  Version: 1.11.2
  Source dir: /project
  Build dir: /project/.mesonpy-phtgps2v
  Build type: native build
  Project name: gmp
  Project version: v0.6.0a3.dev40+g8c6b7cf
  C compiler for the host machine: cc (gcc 14.2.1 "cc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-11)")
  C linker for the host machine: cc ld.bfd 2.41-4
  Host machine cpu family: aarch64
  Host machine cpu: aarch64
  Program python found: YES (/tmp/build-env-jca10p_e/bin/python)
  Found pkg-config: YES (/usr/bin/pkg-config) 1.4.2
  Run-time dependency zz found: YES 0.9.0a5
  Found pkg-config: YES (/usr/bin/pkg-config) 1.4.2
  Run-time dependency python found: YES 3.15
  Build targets in project: 2

  gmp v0.6.0a3.dev40+g8c6b7cf

    User defined options
      Native files: /project/.mesonpy-phtgps2v/meson-python-native-file.ini
      b_ndebug    : if-release
      b_vscrt     : md
      buildtype   : release
      vsenv       : true

  Found ninja-1.13.0.git.kitware.jobserver-pipe-1 at /tmp/build-env-jca10p_e/bin/ninja

  Visual Studio environment is needed to run Ninja. It is recommended to use Meson wrapper:
  /tmp/build-env-jca10p_e/bin/meson compile -C .
  + /tmp/build-env-jca10p_e/bin/ninja
  [1/6] Generating generate-version with a custom command
  Saving version to _version.py
  [2/6] Compiling C object gmp.cpython-315t-aarch64-linux-gnu.so.p/fmt.c.o
  FAILED: [code=1] gmp.cpython-315t-aarch64-linux-gnu.so.p/fmt.c.o
  cc -Igmp.cpython-315t-aarch64-linux-gnu.so.p -I. -I.. -I/project/.local/include -I/opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t -fvisibility=hidden -fdiagnostics-color=always -DNDEBUG -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c17 -O3 -Wall -Werror -Wconversion -fPIC -MD -MQ gmp.cpython-315t-aarch64-linux-gnu.so.p/fmt.c.o -MF gmp.cpython-315t-aarch64-linux-gnu.so.p/fmt.c.o.d -o gmp.cpython-315t-aarch64-linux-gnu.so.p/fmt.c.o -c ../fmt.c
  In file included from /opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t/Python.h:79,
                   from ../utils.h:16,
                   from ../mpz.h:4,
                   from ../fmt.c:1:
  /opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t/object.h: In function ‘PyObject_TypeCheck’:
  /opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t/object.h:375:12: error: implicit declaration of function ‘Py_IS_TYPE’; did you mean ‘Py_TYPE’? [-Wimplicit-function-declaration]
    375 |     return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
        |            ^~~~~~~~~~
        |            Py_TYPE
  ../mpz.h: At top level:
  ../mpz.h:8:5: error: unknown type name ‘PyObject_HEAD’; did you mean ‘PyObject_DEL’?
      8 |     PyObject_HEAD
        |     ^~~~~~~~~~~~~
        |     PyObject_DEL
  ../mpz.h:9:15: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘hash_cache’
      9 |     Py_hash_t hash_cache;
        |               ^~~~~~~~~~
  [3/6] Compiling C object gmp.cpython-315t-aarch64-linux-gnu.so.p/utils.c.o
  FAILED: [code=1] gmp.cpython-315t-aarch64-linux-gnu.so.p/utils.c.o
  cc -Igmp.cpython-315t-aarch64-linux-gnu.so.p -I. -I.. -I/project/.local/include -I/opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t -fvisibility=hidden -fdiagnostics-color=always -DNDEBUG -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c17 -O3 -Wall -Werror -Wconversion -fPIC -MD -MQ gmp.cpython-315t-aarch64-linux-gnu.so.p/utils.c.o -MF gmp.cpython-315t-aarch64-linux-gnu.so.p/utils.c.o.d -o gmp.cpython-315t-aarch64-linux-gnu.so.p/utils.c.o -c ../utils.c
  In file included from /opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t/Python.h:79,
                   from ../utils.h:16,
                   from ../utils.c:1:
  /opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t/object.h: In function ‘PyObject_TypeCheck’:
  /opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t/object.h:375:12: error: implicit declaration of function ‘Py_IS_TYPE’; did you mean ‘Py_TYPE’? [-Wimplicit-function-declaration]
    375 |     return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
        |            ^~~~~~~~~~
        |            Py_TYPE
  [4/6] Compiling C object gmp.cpython-315t-aarch64-linux-gnu.so.p/extra.c.o
  [5/6] Compiling C object gmp.cpython-315t-aarch64-linux-gnu.so.p/gmp.c.o
  FAILED: [code=1] gmp.cpython-315t-aarch64-linux-gnu.so.p/gmp.c.o
  cc -Igmp.cpython-315t-aarch64-linux-gnu.so.p -I. -I.. -I/project/.local/include -I/opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t -fvisibility=hidden -fdiagnostics-color=always -DNDEBUG -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c17 -O3 -Wall -Werror -Wconversion -fPIC -MD -MQ gmp.cpython-315t-aarch64-linux-gnu.so.p/gmp.c.o -MF gmp.cpython-315t-aarch64-linux-gnu.so.p/gmp.c.o.d -o gmp.cpython-315t-aarch64-linux-gnu.so.p/gmp.c.o -c ../gmp.c
  In file included from /opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t/Python.h:79,
                   from ../utils.h:16,
                   from ../mpz.h:4,
                   from ../gmp.c:1:
  /opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t/object.h: In function ‘PyObject_TypeCheck’:
  /opt/_internal/cpython-3.15.0b2-nogil/include/python3.15t/object.h:375:12: error: implicit declaration of function ‘Py_IS_TYPE’; did you mean ‘Py_TYPE’? [-Wimplicit-function-declaration]
    375 |     return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
        |            ^~~~~~~~~~
        |            Py_TYPE
  ../mpz.h: At top level:
  ../mpz.h:8:5: error: unknown type name ‘PyObject_HEAD’; did you mean ‘PyObject_DEL’?
      8 |     PyObject_HEAD
        |     ^~~~~~~~~~~~~
        |     PyObject_DEL
  ../mpz.h:9:15: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘hash_cache’
      9 |     Py_hash_t hash_cache;
        |               ^~~~~~~~~~
  In file included from ../mpz.h:5:
  ../gmp.c: In function ‘MPZ_new’:
  ../gmp.c:34:29: error: ‘MPZ_Object’ has no member named ‘z’
     34 |         (void)zz_set(0, &res->z);
        |                             ^~
  /project/.local/include/zz/zz.h:66:40: note: in definition of macro ‘zz_set’
     66 |              double: zz_set_double)(U, V)
        |                                        ^
  ../gmp.c:51:25: error: ‘MPZ_Object’ has no member named ‘z’
     51 |         if (zz_init(&res->z)) {
        |                         ^~
  ../gmp.c:60:8: error: ‘MPZ_Object’ has no member named ‘hash_cache’
     60 |     res->hash_cache = -1;
        |        ^~
  ../gmp.c: In function ‘MPZ_to_str’:
  ../gmp.c:72:32: error: ‘MPZ_Object’ has no member named ‘z’
     72 |     bool negative = zz_isneg(&u->z);
        |                                ^~
  ../gmp.c:74:25: error: ‘MPZ_Object’ has no member named ‘z’
     74 |     if (zz_sizeinbase(&u->z, base, &len)) {
        |                         ^~
  ../gmp.c:124:31: error: ‘MPZ_Object’ has no member named ‘z’
    124 |     zz_err ret = zz_get_str(&u->z, base, p);
        |                               ^~
  ../gmp.c: In function ‘MPZ_from_str’:
  ../gmp.c:162:44: error: ‘MPZ_Object’ has no member named ‘z’
    162 |     zz_err ret = zz_set_str(str, base, &res->z);
        |                                            ^~
  ../gmp.c: In function ‘MPZ_from_int’:
  ../gmp.c:242:38: error: ‘MPZ_Object’ has no member named ‘z’
    242 |         if (res && zz_set(value, &res->z)) {
        |                                      ^~
  /project/.local/include/zz/zz.h:66:40: note: in definition of macro ‘zz_set’
     66 |              double: zz_set_double)(U, V)
        |                                        ^
  ../gmp.c: In function ‘MPZ_to_int’:
  ../gmp.c:267:18: error: ‘MPZ_Object’ has no member named ‘z’
    267 |     if (zz_get(&u->z, &value) == ZZ_OK) {
        |                  ^~
  /project/.local/include/zz/zz.h:77:15: note: in definition of macro ‘zz_get’
     77 |     _Generic((U),                                              \
        |               ^
  ../gmp.c:267:18: error: ‘MPZ_Object’ has no member named ‘z’
    267 |     if (zz_get(&u->z, &value) == ZZ_OK) {
        |                  ^~
  /project/.local/include/zz/zz.h:83:58: note: in definition of macro ‘zz_get’
     83 |                                double *: zz_get_double))(U, V)
        |                                                          ^
  ../gmp.c:287:27: error: ‘MPZ_Object’ has no member named ‘z’
    287 |     (void)zz_sizeinbase(&u->z, 16, &len);
        |                           ^~
  ../gmp.c:288:23: error: ‘MPZ_Object’ has no member named ‘z’
    288 |     len += zz_isneg(&u->z);
        |                       ^~
  ../gmp.c:292:22: error: ‘MPZ_Object’ has no member named ‘z’
    292 |     if (zz_get_str(&u->z, 16, buf)) {
        |                      ^~
  ../gmp.c: In function ‘MPZ_to_bytes’:
  ../gmp.c:329:33: error: ‘MPZ_Object’ has no member named ‘z’
    329 |     zz_err ret = zz_get_bytes(&u->z, (size_t)length, is_signed, &buffer);
        |                                 ^~
  ../gmp.c:338:24: error: ‘MPZ_Object’ has no member named ‘z’
    338 |         if (zz_isneg(&u->z) && !is_signed) {
        |                        ^~
  ../gmp.c: In function ‘MPZ_from_bytes’:
  ../gmp.c:402:70: error: ‘MPZ_Object’ has no member named ‘z’
    402 |     zz_err ret = zz_set_bytes(buffer, (size_t)length, is_signed, &res->z);
        |                                                                      ^~
  ../gmp.c: In function ‘dealloc’:
  ../gmp.c:548:24: error: ‘MPZ_Object’ has no member named ‘z’
    548 |         && zz_sizeof(&u->z) <= MAX_FREELIST_SIZEOF
        |                        ^~
  ../gmp.c:555:20: error: ‘MPZ_Object’ has no member named ‘z’
    555 |         zz_clear(&u->z);
        |                    ^~
  ../gmp.c: In function ‘to_float’:
  ../gmp.c:644:27: error: ‘MPZ_Object’ has no member named ‘z’
    644 |     zz_err ret = zz_get(&u->z, &d);
        |                           ^~
  /project/.local/include/zz/zz.h:77:15: note: in definition of macro ‘zz_get’
     77 |     _Generic((U),                                              \
        |               ^
  ../gmp.c:644:27: error: ‘MPZ_Object’ has no member named ‘z’
    644 |     zz_err ret = zz_get(&u->z, &d);
        |                           ^~
  /project/.local/include/zz/zz.h:83:58: note: in definition of macro ‘zz_get’
     83 |                                double *: zz_get_double))(U, V)
        |                                                          ^
  ../gmp.c: In function ‘richcompare’:
  ../gmp.c:692:22: error: ‘MPZ_Object’ has no member named ‘z’
    692 |         r = zz_cmp(&u->z, &((MPZ_Object *)other)->z);
        |                      ^~
  /project/.local/include/zz/zz.h:222:15: note: in definition of macro ‘zz_cmp’
    222 |     _Generic((U),                                      \
        |               ^
  ../gmp.c:692:22: error: ‘MPZ_Object’ has no member named ‘z’
    692 |         r = zz_cmp(&u->z, &((MPZ_Object *)other)->z);
        |                      ^~
  /project/.local/include/zz/zz.h:227:50: note: in definition of macro ‘zz_cmp’
    227 |                                default: zz_cmp))(U, V)
        |                                                  ^
  ../gmp.c:692:49: error: ‘MPZ_Object’ has no member named ‘z’
    692 |         r = zz_cmp(&u->z, &((MPZ_Object *)other)->z);
        |                                                 ^~
  /project/.local/include/zz/zz.h:227:53: note: in definition of macro ‘zz_cmp’
    227 |                                default: zz_cmp))(U, V)
        |                                                     ^
  ../gmp.c:699:26: error: ‘MPZ_Object’ has no member named ‘z’
    699 |             r = zz_cmp(&u->z, temp);
        |                          ^~
  /project/.local/include/zz/zz.h:222:15: note: in definition of macro ‘zz_cmp’
    222 |     _Generic((U),                                      \
        |               ^
  ../gmp.c:699:26: error: ‘MPZ_Object’ has no member named ‘z’
    699 |             r = zz_cmp(&u->z, temp);
        |                          ^~
  /project/.local/include/zz/zz.h:227:50: note: in definition of macro ‘zz_cmp’
    227 |                                default: zz_cmp))(U, V)
        |                                                  ^
  ../gmp.c:707:26: error: ‘MPZ_Object’ has no member named ‘z’
    707 |             r = zz_cmp(&u->z, &v->z);
        |                          ^~
  /project/.local/include/zz/zz.h:222:15: note: in definition of macro ‘zz_cmp’
    222 |     _Generic((U),                                      \
        |               ^
  ../gmp.c:707:26: error: ‘MPZ_Object’ has no member named ‘z’
    707 |             r = zz_cmp(&u->z, &v->z);
        |                          ^~
  /project/.local/include/zz/zz.h:227:50: note: in definition of macro ‘zz_cmp’
    227 |                                default: zz_cmp))(U, V)
        |                                                  ^
  ../gmp.c:707:33: error: ‘MPZ_Object’ has no member named ‘z’
    707 |             r = zz_cmp(&u->z, &v->z);
        |                                 ^~
  /project/.local/include/zz/zz.h:227:53: note: in definition of macro ‘zz_cmp’
    227 |                                default: zz_cmp))(U, V)
        |                                                     ^
  In file included from ../gmp.c:5:
  ../gmp.c: In function ‘hash’:
  ../gmp.c:755:48: error: ‘MPZ_Object’ has no member named ‘hash_cache’
    755 |                                            *)&u->hash_cache,
        |                                                ^~
  ../gmp.c:754:22: error: ‘__atomic_load_ptr’ undeclared (first use in this function); did you mean ‘__atomic_load_n’?
    754 |     Py_hash_t hash = atomic_load_explicit((const _Atomic(Py_hash_t)
        |                      ^~~~~~~~~~~~~~~~~~~~
  ../gmp.c:754:22: note: each undeclared identifier is reported only once for each function it appears in
  ../gmp.c:754:22: error: argument 1 of ‘__atomic_load’ must be a non-void pointer type
    754 |     Py_hash_t hash = atomic_load_explicit((const _Atomic(Py_hash_t)
        |                      ^~~~~~~~~~~~~~~~~~~~
  ../gmp.c:771:20: error: ‘MPZ_Object’ has no member named ‘z’
    771 |     (void)zz_div(&u->z, (int64_t)pyhash_modulus, NULL, &w);
        |                    ^~
  /project/.local/include/zz/zz.h:196:15: note: in definition of macro ‘zz_div’
    196 |     _Generic((U),                                            \
        |               ^
  ../gmp.c:771:20: error: ‘MPZ_Object’ has no member named ‘z’
    771 |     (void)zz_div(&u->z, (int64_t)pyhash_modulus, NULL, &w);
        |                    ^~
  /project/.local/include/zz/zz.h:207:50: note: in definition of macro ‘zz_div’
    207 |                                default: zz_div))(U, V, Q, R)
        |                                                  ^
  ../gmp.c:775:20: error: ‘MPZ_Object’ has no member named ‘z’
    775 |     if (zz_isneg(&u->z) && hash) {
        |                    ^~
  ../gmp.c:782:51: error: ‘MPZ_Object’ has no member named ‘hash_cache’
    782 |     atomic_store_explicit((_Atomic(Py_hash_t) *)&u->hash_cache,
        |                                                   ^~
  ../gmp.c:782:5: error: ‘__atomic_store_ptr’ undeclared (first use in this function); did you mean ‘__atomic_store_n’?
    782 |     atomic_store_explicit((_Atomic(Py_hash_t) *)&u->hash_cache,
        |     ^~~~~~~~~~~~~~~~~~~~~
  ../gmp.c:782:5: error: conversion from ‘Py_hash_t’ {aka ‘long int’} to ‘int’ may change value [-Werror=conversion]
    782 |     atomic_store_explicit((_Atomic(Py_hash_t) *)&u->hash_cache,
        |     ^~~~~~~~~~~~~~~~~~~~~
  ../gmp.c:782:5: error: argument 1 of ‘__atomic_store’ must be a non-void pointer type
    782 |     atomic_store_explicit((_Atomic(Py_hash_t) *)&u->hash_cache,
        |     ^~~~~~~~~~~~~~~~~~~~~
  ../gmp.c: In function ‘plus’:
  ../gmp.c:802:34: error: ‘MPZ_Object’ has no member named ‘z’
    802 |         zz_err ret = zz_##suff(&u->z, &res->z);                \
        |                                  ^~
  ../gmp.c:817:1: note: in expansion of macro ‘UNOP’
    817 | UNOP(pos, plus)
        | ^~~~
  ../gmp.c:802:43: error: ‘MPZ_Object’ has no member named ‘z’
    802 |         zz_err ret = zz_##suff(&u->z, &res->z);                \
        |                                           ^~
  ../gmp.c:817:1: note: in expansion of macro ‘UNOP’
    817 | UNOP(pos, plus)
        | ^~~~
  ../gmp.c: In function ‘nb_negative’:
  ../gmp.c:802:34: error: ‘MPZ_Object’ has no member named ‘z’
    802 |         zz_err ret = zz_##suff(&u->z, &res->z);                \
        |                                  ^~
  ../gmp.c:818:1: note: in expansion of macro ‘UNOP’
    818 | UNOP(neg, nb_negative)
        | ^~~~
  ../gmp.c:802:43: error: ‘MPZ_Object’ has no member named ‘z’
    802 |         zz_err ret = zz_##suff(&u->z, &res->z);                \
        |                                           ^~
  ../gmp.c:818:1: note: in expansion of macro ‘UNOP’
    818 | UNOP(neg, nb_negative)
        | ^~~~
  ../gmp.c: In function ‘nb_absolute’:
  ../gmp.c:802:34: error: ‘MPZ_Object’ has no member named ‘z’
    802 |         zz_err ret = zz_##suff(&u->z, &res->z);                \
        |                                  ^~
  ../gmp.c:819:1: note: in expansion of macro ‘UNOP’
    819 | UNOP(abs, nb_absolute)
        | ^~~~
  ../gmp.c:802:43: error: ‘MPZ_Object’ has no member named ‘z’
    802 |         zz_err ret = zz_##suff(&u->z, &res->z);                \
        |                                           ^~
  ../gmp.c:819:1: note: in expansion of macro ‘UNOP’
    819 | UNOP(abs, nb_absolute)
        | ^~~~
  ../gmp.c: In function ‘nb_invert’:
  ../gmp.c:802:34: error: ‘MPZ_Object’ has no member named ‘z’
    802 |         zz_err ret = zz_##suff(&u->z, &res->z);                \
        |                                  ^~
  ../gmp.c:820:1: note: in expansion of macro ‘UNOP’
    820 | UNOP(invert, nb_invert) /* may overflow */
        | ^~~~
  ../gmp.c:802:43: error: ‘MPZ_Object’ has no member named ‘z’
    802 |         zz_err ret = zz_##suff(&u->z, &res->z);                \
        |                                           ^~
  ../gmp.c:820:1: note: in expansion of macro ‘UNOP’
    820 | UNOP(invert, nb_invert) /* may overflow */
        | ^~~~
  ../gmp.c: In function ‘to_bool’:
  ../gmp.c:831:44: error: ‘MPZ_Object’ has no member named ‘z’
    831 |     return !zz_iszero(&((MPZ_Object *)self)->z);
        |                                            ^~
  ../gmp.c: In function ‘nb_add’:
  ../gmp.c:875:37: error: ‘MPZ_Object’ has no member named ‘z’
    875 |             ret = zz_##suff(ival, &v->z, &res->z);                \
        |                                     ^~
  /project/.local/include/zz/zz.h:131:29: note: in definition of macro ‘zz_add’
    131 |              int: _Generic((V),                                 \
        |                             ^
  ../gmp.c:936:1: note: in expansion of macro ‘BINOP’
    936 | BINOP(add, PyNumber_Add)
        | ^~~~~
  ../gmp.c:875:37: error: ‘MPZ_Object’ has no)(U, V, Q, R)
        |                                                  ^
  ../gmp.c:2078:32: error: ‘MPZ_Object’ has no member named ‘z’
   2078 |         || zz_div(&res->z, &den->z, &res->z, NULL))
        |                                ^~
  /project/.local/include/zz/zz.h:207:53: note: in definition of macro ‘zz_div’
    207 |                                default: zz_div))(U, V, Q, R)
        |                                                     ^
  ../gmp.c:2078:41: error: ‘MPZ_Object’ has no member named ‘z’
   2078 |         || zz_div(&res->z, &den->z, &res->z, NULL))
        |                                         ^~
  /project/.local/include/zz/zz.h:207:56: note: in definition of macro ‘zz_div’
    207 |                                default: zz_div))(U, V, Q, R)
        |                                                        ^
  ../gmp.c: In function ‘gmp__mpmath_normalize’:
  ../gmp.c:2165:56: error: ‘MPZ_Object’ has no member named ‘z’
   2165 |                                                    &man->z, &exp->z, &bc)))
        |                                                        ^~
  ../gmp.c:2165:65: error: ‘MPZ_Object’ has no member named ‘z’
   2165 |                                                    &man->z, &exp->z, &bc)))
        |                                                                 ^~
  ../gmp.c: In function ‘gmp__mpmath_create’:
  ../gmp.c:2223:34: error: ‘MPZ_Object’ has no member named ‘z’
   2223 |     bool negative = zz_isneg(&man->z);
        |                                  ^~
  ../gmp.c:2224:36: error: ‘MPZ_Object’ has no member named ‘z’
   2224 |     zz_bitcnt_t bc = zz_bitlen(&man->z);
        |                                    ^~
  ../gmp.c:2229:26: error: ‘MPZ_Object’ has no member named ‘z’
   2229 |         (void)zz_abs(&man->z, &man->z);
        |                          ^~
  ../gmp.c:2229:35: error: ‘MPZ_Object’ has no member named ‘z’
   2229 |         (void)zz_abs(&man->z, &man->z);
        |                                   ^~
  ../gmp.c:2255:48: error: ‘MPZ_Object’ has no member named ‘z’
   2255 |                                            &man->z, &exp->z, &bc)))
        |                                                ^~
  ../gmp.c:2255:57: error: ‘MPZ_Object’ has no member named ‘z’
   2255 |                                            &man->z, &exp->z, &bc)))
        |                                                         ^~
  ../gmp.c: At top level:
  ../gmp.c:2470:15: error: variable ‘gmp_module’ has initializer but incomplete type
   2470 | static struct PyModuleDef gmp_module = {
        |               ^~~~~~~~~~~
  ../gmp.c:2471:5: error: ‘PyModuleDef_HEAD_INIT’ undeclared here (not in a function); did you mean ‘PyModuleDef_Init’?
   2471 |     PyModuleDef_HEAD_INIT,
        |     ^~~~~~~~~~~~~~~~~~~~~
        |     PyModuleDef_Init
  ../gmp.c:2471:5: error: excess elements in struct initializer [-Werror]
  ../gmp.c:2471:5: note: (near initialization for ‘gmp_module’)
  ../gmp.c:2472:6: error: ‘struct PyModuleDef’ has no member named ‘m_name’
   2472 |     .m_name = "gmp",
        |      ^~~~~~
  ../gmp.c:2472:15: error: excess elements in struct initializer [-Werror]
   2472 |     .m_name = "gmp",
        |               ^~~~~
  ../gmp.c:2472:15: note: (near initialization for ‘gmp_module’)
  ../gmp.c:2473:6: error: ‘struct PyModuleDef’ has no member named ‘m_doc’
   2473 |     .m_doc = "Bindings to the GN
[...]
@skirpichev

This comment was marked as resolved.

@skirpichev skirpichev closed this Jul 27, 2026
@skirpichev
skirpichev deleted the limited-api/234 branch July 27, 2026 04:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant